package cn.highedu.coolsharkhub.service;

import cn.highedu.coolsharkhub.pojo.dto.CategoryDTO;
import cn.highedu.coolsharkhub.pojo.vo.CategoryManagementVO;
import cn.highedu.coolsharkhub.pojo.vo.CategoryVO;
import cn.highedu.coolsharkhub.service.exception.BlankParameterException;

import java.util.List;

/**
 * 商品类别业务层接口
 * 操作商品类别数据
 */
public interface CategoryService {
    /**
     * 查询首页商品类别
     * display值为1的类别才能显示在页面中
     * @return 首页中显示的商品类别
     */
    List<CategoryVO> findHomepageCategories();

    /**
     * 查询管理页面商品分类
     * @return 管理页面商品分类
     */
    List<CategoryManagementVO> findManagementCategories();

    /**
     * 根据商品分类id删除商品分类
     * @param id 商品分类id
     *           不能为null
     *           必须为已经存在的商品分类id
     * @throws BlankParameterException 商品分类id为null或者商品分类id不存在
     * @throws EntityNotFoundException 删除商品分类失败，商品分类不存在
     */
    void deleteById(Integer id);

    /**
     * 添加商品分类
     * @param categoryDTO 商品分类数据传输对象
     * @throws BlankParameterException 商品分类名称为null或者商品分类名称为空字符串
     */
    void addCategory(CategoryDTO categoryDTO);

    /**
     * 根据商品分类id更新商品分类
     * @param id 商品分类id
     * @param categoryDTO 商品分类数据传输对象
     */
    void updateCategory(Integer id, CategoryDTO categoryDTO);
}
